package com.sky;

import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@EnableScheduling               //开启任务调度功能,用于定时任务,定时执行一些方法
@EnableCaching                  //开启缓存注解功能(redis中配合@Cacheable注解)使用解决数据库查询缓存问题
@MapperScan("com.sky.mapper")   //指定扫描mapper,可以不用在mapper里在加@Mapper注解,这里统一自动添加通过@MapperScan
@SpringBootApplication
@EnableTransactionManagement    //开启注解方式的事务管理
@Slf4j
public class SkyApplication {
    public static void main(String[] args) {
        SpringApplication.run(SkyApplication.class, args);
        log.info("server started");
    }
}


//@EnableCaching 需要引入spring-boot-starter-data-redis依赖
//配合对应的三个注解使用分别是@Cacheable @CachePut @CacheEvict
//@Cacheable是作用在方法上,用于缓存数据,先查缓存,缓存中有则直接返回,缓存中没有则调用方法,将结果放入缓存,下次再查询时,直接从缓存中获取
//属性介绍 例子@Cacheable(value = "cacheName",key = "cacheKey")
//value:缓存名称
//key:缓存的key
//@CachePut是作用在方法上,用于写入缓存,将方法返回值放入缓存,下次再查询时,直接从缓存中获取
//@CacheEvict是作用在方法上,用于清除缓存,清除指定缓存,下次再查询时,会重新调用方法,将结果放入缓存,下次再查询时,直接从缓存中获取